const fs = require('fs');
const { Transform } = require('stream');

// 创建一个转换流，将字符转换为大写
const upperCaseTransform = new Transform({
  transform(chunk, encoding, callback) {
    // 将数据块转换为大写
    const upperCaseData = chunk.toString().toUpperCase();
    // 将转换后的数据推送到输出流
    callback(null, upperCaseData);
  }
});

// 创建可读流从 from.txt 读取数据
const readableStream = fs.createReadStream('from.txt', { encoding: 'utf8' });

// 创建可写流写入到 to.txt
const writableStream = fs.createWriteStream('to.txt', { encoding: 'utf8' });

// 使用管道连接流：可读流 -> 转换流 -> 可写流
readableStream
  .pipe(upperCaseTransform)
  .pipe(writableStream);

// 监听事件
readableStream.on('error', (err) => {
  console.error('读取文件时出错:', err);
});

writableStream.on('finish', () => {
  console.log('文件转换完成！数据已写入 to.txt');
});

writableStream.on('error', (err) => {
  console.error('写入文件时出错:', err);
});

console.log('开始处理文件流...');
